Node.js十年,你大爷还是你大爷
Node.js从2009年诞生开始,到现在已有10岁,在这10年里,它的成长和成熟是大家有目共睹的。它因后端简化并发编程而被关注,因作为前端辅助开发工具而流行,因异步流程控制和回调地狱而被人诟病,因npm批量安装模块而被人敬仰。
作为技术领域里的明星项目,Node.js自诞生以来就一直处于风口浪尖之上。下面就来聊聊这些年Node.js被人们反复提起的“黑料”。
01PART版本帝?
2013年,发布了0.10版本。 2015年1月,发布了1.0.0版本(io.js)。 2015年5月,发布了2.x版本(io.js)。 2015年8月,发布了3.x版本(io.js)。 2015年9月,Node.js基金会发布了5.0版本与io.js合并后的第一个版本。 2015年10月,Node.js 5.2.0版本成为首个LTS(长期支持)版本。 2015年年底,发布了5.2.4和5.5.0版本。 2016年3月,发布了5.5.0 LTS版本和5.9.0 Stable稳定版本。 2016年年底,6.0版本支持95%以上的ES6特性,7.0版本通过flag支持async函数,全面支持99%的ES6特性。 2017年2月,发布了7.6版本,可以不通过flag使用async函数。 2017年5月,发布了8.0版本,支持async Hooks,N-API等特性。 2018年4月,发布了10.0版本,新增http2模块,将npm从v5.7更新到了v6,并且增强了对ESMModules的支持。 2018年10月,发布了11.0版本,增加了多线程Worker Threads。
02PART已无性能优势?
03PART异步和回调地狱
正因为异步特性,Node.jsAPI设计只能采用错误优先(Error-First)风格的回调约定,于是大家硬生生地把多层回调写成了回调地狱(callback hell),这时就有各种“黑粉”冒出来对Node.js进行攻击。
但正是因为回调地狱是最差的实践,所以大家才不得不求变,于是Thunk函数、Promise/A+规范等相继出现。虽然Promise/A+规范不是那么完美,但对于解决回调地狱问题来说已经足够。而且Generator特性和Generator的执行环境co模块也被逐渐引入新的异步解决方案,使得异步在写法上越来越接近于同步。当async函数落地的时候,Node.js 已经站在了同C#、Python一样的高度上,大家还有什么理由攻击它呢?
下面列举了Node.js支持的所有异步解决方案,并给出了推荐建议(5星为最高级别)。
04PART技术栈演进
可以使用Node.js v5.x+里的ES6特性,如果想实现更高级的功能,可以使用Babel编译支持ES7特性,或者使用TypeScript。
合理使用Standard或者xo模块代码风格约定。
适当引入ES6语法,只要Node.js SDK内置支持的,都可以使用。
大家要重视面向对象写法的使用,虽然ES6的面向对象机制不健全,但以后定会不断完善。面向对象对于大型软件开发更适合,这其实也是我推荐使用TypeScript的原因之一。
Node.js在2009年横空出世时,确实是独一无二的。但在今天,已经10岁的Node.js有了更多、更广泛的应用场景,它的意义已经远远大于设计时的初衷了。随着大前端领域的蓬勃发展,跨平台开发、API构建、Web应用开发等场景愈加常见,Node.js也成为大前端开发的必备“神器”。
本书主要讲解Node.js Web应用开发涉及的HTTP基础知识、常用开发框架、源码原理、数据库和项目实战,旨在向读者展示如何通过Node.js和Koa编写出更具前端特色的Web应用。
Koa立身于最“潮”的异步流程控制特性,主要用于改进Node.js开发中的回调地狱痛点,可以说Koa是异步流程控制不断演进的必然产物。在所有的Node.js Web框架中,Koa无疑是最耀眼的一个。
(扫码获取本书详情)
作 者 简 介
狼叔(网名i5ting),Node.js 技术布道者,“Node全栈”公众号作者,全栈技术实践者。曾就职于多家知名IT企业,从事前端开发、后端开发、数据分析等工作,目前负责公司内的Node.js开发和基础框架开发工作。
本 书 内 容
本书共分8章,每章的内容简介如下。
第2章 Koa核心扩展机制:中间件
本章将介绍Koa的核心中间件原理,以及Koa中常用的中间件:路由、视图、静态服务模块等。中间件机制是Koa的核心内容,因此本章内容非常重要。
第3章 HTTP必知必会
本章将介绍请求响应模型,也将对HTTP和HTTPS进行讲解,同时以mini-proxy和hiproxy为核心对前端最常用的代理进行讲解。
第4章 Koa练习
本章将结合第3章的HTTP相关知识进行Koa框架内置方法的练习,比如地址解析、参数获取、body解析、API开发,还将介绍各种测试模块和工具软件的用法。
第5章 数据库基础
本章将介绍Node.js数据库选型和MVC模型层的用法,以及使用Mongoose模块操作MongoDB的方法,其中涉及Mongoose中的一些进阶技巧:模型扩展、虚拟属性、回调钩子和插件机制。
第6章 数据库进阶
本章将在第5章的基础上介绍数据库中的进阶技巧:分页、关联查询、事务、性能调优等。通过本章大家能够对Node.js数据库选型掌握得更好。
第7章 前端视图模板
本章将从public目录讲起,介绍前端相关知识,主要涉及模板编译原理、Webpack进阶知识。本章还将介绍前后端分离和服务器端渲染的演进,并提出对未来Serverless环境下前端渲染层的见解。
第8章 项目实战
本章将以CNode项目为核心,介绍基于Egg.js框架的项目代码,还会介绍基于Docker快速开发Node.js Web应用的方法。
————
本书中的各章在内容上基本是相互独立的,因此各位读者可以挑选自己感兴趣的章节阅读。这本书是《狼书》系列图书的第2卷,第1卷主要介绍Node.js基础知识,第3卷主要介绍Node.js高级应用。3卷搭配阅读,效果更好。
《狼书(卷1):更了不起的Node.js》 《狼书(卷3):Node.js高级技术》(即将出版)
在很多人眼里,程序员是一个神秘的职业,编程更是深不可测的世界。对编程充满了向往和好奇,但是又苦于找不到入门的方法。本套课程就是为了这些人准备的,通过学习Python语言,打开编程世界的大门!
本课程形式为线上视频教学+纸质图书,仅需39元!
热文推荐